Jump To:
Technical Q&As
Apple provides opportunities for developers to create hardware devices, including memory, mass storage, PCI, CardBus, USB, FireWire, and wireless solutions. Developer notes listed in the Apple Hardware topic provide relevant connector, cabling, and pin-out information, physical dimensions, electrical and thermal requirements, and pointers and references to standards.

Hardware Resources
A guided introduction and learning path to developing hardware and device-level software for Apple's computers and servers.  
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Date
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
SCSI 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
SCSI 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
SCSI 2004-01-15
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
SCSI 2002-02-07
Open Firmware and the devalias node (HTML)
HW95: Describes why the contents of the Open Firmware devalias node varies between Macintosh models.
SCSI 2000-09-05
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
SCSI 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
SCSI 1995-07-15
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
SCSI 2002-09-04
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
SCSI 1999-10-11
SCSI ID from vRefNum (HTML) ()
DV29: Legacy Mac OS technique for identifying the ID of a SCSI Parallel device containing a specified disk volume.
SCSI 1997-05-23
A SCSI little secret (HTML)
HW81: Details what to expect when accessing the motherboard SCSI bus on the Blue & White G3.
SCSI 1999-12-20
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
SCSI 2002-09-13
Sending SCSI commands to storage devices (HTML) ()
QA1179: Explains that Mac OS X does not implement SCSI pass-through for many mass storage devices.
SCSI 2002-08-06
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
SCSI 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
SCSI 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
SCSI 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
SCSI 1999-03-29
Workaround for Asynchronous SCSIAction Crashes (HTML) ()
Deprecated - QA1129: Explains how to workaround asynchronous SCSIAction crashes on Mac OS X.
SCSI 2002-03-21
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
Serial 2001-12-05
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Serial 1999-02-15
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Serial 1999-03-29
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Serial 2001-12-05
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Serial 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Serial 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Serial 1999-03-29
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Serial 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Serial 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Serial 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Serial 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Serial 2004-01-15
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
Serial 2002-02-07
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Serial 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
Serial 1995-07-15
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Serial 1999-10-11
Serial API Choice (HTML)
DV39: Discusses the choice of serial APIs supported by traditional Mac OS and Mac OS X.
Serial 2001-07-02
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Serial 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Serial 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Serial 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Serial 1999-03-29
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Still Cameras 1999-02-15
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Still Cameras 1999-03-29
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Still Cameras 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Still Cameras 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Still Cameras 1999-03-29
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Still Cameras 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Still Cameras 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Still Cameras 1999-11-15
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Still Cameras 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
Still Cameras 1995-07-15
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Still Cameras 2002-09-04
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Still Cameras 1999-10-11
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
Still Cameras 2002-09-13
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Still Cameras 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Still Cameras 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Still Cameras 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Still Cameras 1999-03-29
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
USB 2001-12-05
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
USB 1999-02-15
Common QA and Roadmap for USB Software Development on Mac OS X (HTML)
QA1370: Roadmap for development of USB Software on Mac OS X and some Common Questions and Answers
USB 2004-09-22
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
USB 1999-03-29
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
USB 2001-12-05
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
USB 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
USB 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
USB 1999-03-29
HID Manager Event Data Underruns (HTML)
QA1038: Explains how to correctly handle HID Manager event queue data underruns.
USB 2001-06-13
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
USB 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
USB 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
USB 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
USB 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
USB 2004-01-15
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
USB 2002-02-07
Open Firmware and the devalias node (HTML)
HW95: Describes why the contents of the Open Firmware devalias node varies between Macintosh models.
USB 2000-09-05
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
USB 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
USB 1995-07-15
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
USB 2002-09-04
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
USB 1999-10-11
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
USB 2002-09-13
SDRAM Problems With Self-Powered USB Devices (HTML) ()
HW82: Alerts that non-compliant, self-powered USB devices plugged into a G4, can cause problems with low-voltage-sensitive SDRAM .
USB 2003-08-21
Sending SCSI commands to storage devices (HTML) ()
QA1179: Explains that Mac OS X does not implement SCSI pass-through for many mass storage devices.
USB 2002-08-06
Tips on USB driver matching for Mac OS X (HTML)
QA1076: Gives some tips on getting USB driver matching to work.
USB 2001-10-02
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
USB 1999-02-15
What are snag keys in Open Firmware? (HTML) ()
HW35: Explains Open Firmware snag keys, including examples of their function.
USB 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
USB 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
USB 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
USB 1999-03-29